package cn.tedu.oop;
/**本类用作静态static的入门案例
 * 被static修饰的资源统称为静态资源
 * 静态资源是随着类加载而加载到内存中的，比对象优先进入内存
 * 所以静态资源可以不通过对象,直接通过类名调用*/
public class TestStatic1 {
    public static void main(String[] args) {
        //5.通过类名直接调用静态资源
        Fruit.clean();//我们可以通过类名直接调用静态方法,这个IDEA会提示
        System.out.println(Fruit.kind);//我们可以通过类名直接调用静态属性,这个IDEA会提示
        //4.创建水果类的对象
        Fruit f1 = new Fruit();
        Fruit f2 = new Fruit();
        f1.grow();
        f1.clean();//没有提示,需要自己写
        System.out.println(f1.weight);
        System.out.println(f1.kind);//没有提示,需要自己写

        //6.修改普通变量的值
        f1.weight = 6.6;
        System.out.println(f1.weight);//6.6
        System.out.println(f2.weight);//0.0

        /*3.静态资源在内存中只有一份,而且会被全局所有对象共享
         * 所以:不管我们使用哪种方式修改了静态变量的值,使用任何方式来查看
         * 都是静态变量那个刚刚修改了的值*/
        //7.修改静态变量的值
        Fruit.kind = "苹果";
        System.out.println(Fruit.kind);//苹果
        System.out.println(f1.kind);//苹果
        System.out.println(f2.kind);//苹果

        f1.kind = "猕猴桃";
        System.out.println(Fruit.kind);//猕猴桃
        System.out.println(f1.kind);//猕猴桃
        System.out.println(f2.kind);//猕猴桃

        f2.kind = "香蕉";
        System.out.println(Fruit.kind);
        System.out.println(f1.kind);
        System.out.println(f2.kind);

    }
}
class Fruit{
    /**1.可以用static修饰成员变量*/
   static String kind;
   double weight;
    /**2.可以用static修饰方法*/
    public static void clean(){
        System.out.println("洗水果");
    }
    public void grow(){
        System.out.println("这个果子长得一看就很好吃~");
    }
}
